package com.accloud.service;

import com.accloud.cloudservice.PayloadCallback;
import com.accloud.cloudservice.VoidCallback;
import java.util.List;

public interface ACDeviceDataMgr {

    public interface OnlineStatusListener {
        void onStatusChanged(String str, long j, boolean z);
    }

    public interface PropertyReceiver {
        void onPropertyReceive(String str, long j, String str2);
    }

    public interface WarningReceiver {
        void onWarningReceive(String str, long j, String str2);
    }

    void disableAllDeviceFastReport();

    void disableDeviceFastReport(String str, long j, VoidCallback voidCallback);

    void enableDeviceFastReport(String str, long j, int i, VoidCallback voidCallback);

    void fetchCurrentProperty(String str, long j, PayloadCallback<String> payloadCallback);

    void fetchHistoryProperty(String str, long j, QueryOption queryOption, PayloadCallback<List<String>> payloadCallback);

    void fetchWarningStatus(String str, long j, PayloadCallback<String> payloadCallback);

    void registerOnlineStatusListener(OnlineStatusListener onlineStatusListener);

    void registerPropertyReceiver(PropertyReceiver propertyReceiver);

    void registerWarningReceiver(WarningReceiver warningReceiver);

    void subscribeOnlineStatus(String str, long j, VoidCallback voidCallback);

    void subscribeProperty(String str, long j, VoidCallback voidCallback);

    void subscribeWarning(String str, long j, VoidCallback voidCallback);

    void unSubscribeAllOnlineStatus();

    void unSubscribeAllProperty();

    void unSubscribeAllWarning();

    void unSubscribeOnlineStatus(String str, long j, VoidCallback voidCallback);

    void unSubscribeProperty(String str, long j, VoidCallback voidCallback);

    void unSubscribeWarning(String str, long j, VoidCallback voidCallback);

    void unregisterOnlineStatusListener(OnlineStatusListener onlineStatusListener);

    void unregisterPropertyReceiver(PropertyReceiver propertyReceiver);

    void unregisterWarningReceiver(WarningReceiver warningReceiver);
}
